home *** CD-ROM | disk | FTP | other *** search
/ Info-Mac 4 / Info_Mac IV CD-ROM (Pacific HiTech Inc.)(August 1994).iso / Science / MAL ©P.f.Howden 1⁄1⁄89 / LONGNUMBERS < prev    next >
Text File  |  1989-05-15  |  6KB  |  126 lines

  1. 1 CLS:PRINT "LONG NUMBER ARITHMETIC-best not use decimals.":PRINT"MENU:1=Factorial: 2=Divide: 3=Multiply: 4=Prime factors: ":INPUT"         5=Combinations: 6=Fractions: 7=Base Conversion: 8=Random Numbers";V:ON V GOTO 2,100,200,300,500,800,910,1500
  2. 2 PRINT"LONG FACTORIAL":CLEAR:DIM F(160):L=160:INPUT "NUMBER N=";N:P=1:F(1)=1:PRINT N;"!="
  3. 9 FOR M=1 TO N:C=0:FOR I=1 TO P:F(I)=F(I)*M+C:C=INT (F(I)/10):F(I)=F(I)-10*C:NEXT I
  4. 16 IF C=0 THEN 22
  5. 17 P=P+1:F(P)=C:C=INT (F(P)/10):F(P)=F(P)-10*C:GOTO 16
  6. 22 NEXT M
  7. 25 S=0:FOR I=P TO 1 STEP-1:IF F(I)>0 THEN 27
  8. 26 IF S=0 THEN 29
  9. 27 PRINT CHR$(8);CHR$(8);F(I);:S=1:GOSUB 260:REM CAN GO TO PRINTER
  10. 29 NEXT I:PRINT :GOTO 2
  11.  
  12. 100 CLEAR:PRINT "LONG DIVISION for numbers less than 100,000,000,000,000:"
  13. 102 DEFDBL A-Z:INPUT "NUMERATOR=";N:INPUT "DENOMINATOR=";D:IF N>=100000000000000# OR D>=100000000000000# THEN PRINT"INPUT too big.Try again:":GOTO 100
  14. 107 INPUT "NUMBER OF DECIMAL PLACES=";P
  15. 110 Z=INT (N/D):PRINT Z;"....";
  16. 120 N=10*(N-Z*D):IF N=0 THEN 130
  17. 125 Z=INT (N/D):PRINT CHR$(8);CHR$(8);:PRINT Z;:P=P-1:GOSUB 260:IF P>0 THEN 120
  18. 130 PRINT "END":GOTO 100
  19.  
  20. 200 CLEAR:DEFDBL A-Z:PRINT "LONG MULTIPLICATION: R=A*B. Dont use decimals.":K=80:DIM C$(0),D$(0),A(K),B(K),R(K)
  21. 205 INPUT "A=";C$(0):INPUT "B=";D$(0):N=LEN(C$(0)):M=LEN(D$(0))
  22. 210 FOR I=0 TO N-1:A(I)=VAL(MID$(C$(0),N-I,1)):NEXT I
  23. 215 FOR I=0 TO M-1:B(I)=VAL(MID$(D$(0),M-I,1)):NEXT I
  24. 220 FOR I=0 TO M+N-1:R=C:FOR J=0 TO M-1:IF (J>I) OR (I-J)>N THEN 235
  25. 230 R=R+B(J)*A(I-J)
  26. 235 NEXT J:C=INT (R/10):R(I)=R-10*C:NEXT I:PRINT "RESULT A*B="
  27. 250 PRINT R;:GOSUB 260:L=1:FOR J=M+N-2 TO 0 STEP -1:L=L+1:IF L<31 THEN GOTO 253
  28. 252 L=1:GOTO 254
  29. 253 PRINT CHR$(8);CHR$(8);
  30. 254 PRINT R(J);:GOSUB 260:NEXT J:PRINT "END":GOTO 200
  31. 255 GOTO 133
  32. 260 IF U=9 THEN U=-1:PRINT
  33. 270 U=U+1:RETURN
  34.  
  35. 300 CLEAR:DEFDBL I,J,M,T:PRINT"PRIME FACTORS of INTEGERS less than 10,000,000,000,000"
  36. 320 INPUT "INTEGER = ";I:IF I>=10000000000000# OR I>INT(I) OR I=0 OR I=1 THEN PRINT "Input is too big,zero,1 or not an integer. Try again:":GOTO 300
  37. 330 J=I:T=2:GOSUB 370:T=3:GOSUB 370:T=5:GOSUB 370:T=1
  38. 340 T=T+6:GOSUB 370:T=T+4:GOSUB 370:T=T+2:GOSUB 370:T=T+4:GOSUB 370:T=T+2:GOSUB 370
  39. 350 T=T+4:GOSUB 370:T=T+6:GOSUB 370:T=T+2:GOSUB 370:IF T*T<=J THEN 340
  40. 360 GOTO 420
  41. 370 IF J/T>INT(J/T) THEN 470
  42. 380 IF T=I THEN 450
  43. 390 M=M+1:J=J/T:IF J/T=INT(J/T) THEN 390
  44. 400 PRINT T;" IS A FACTOR OF MULTIPLICITY ";M
  45. 410 M=0:IF T*T<=J THEN 470
  46. 420 IF J=I THEN 450
  47. 430 IF J=1 THEN 460
  48. 440 T=J:J=1:M=1:GOTO 400
  49. 450 PRINT I;" IS A PRIME."
  50. 460 PRINT " END":GOTO 300
  51. 470 RETURN
  52.  
  53. 500 CLS:PRINT "COMBINATIONS OF NUMBERS 1-N"
  54. 510 CLEAR:N1=1:INPUT "N=";N:DIM A(N)
  55. 520 N0=1:FOR J=1 TO N:N0=N0*J:NEXT J:PRINT "NUMBER OF COMBINATIONS=";N;"!=";N0
  56. 530 FOR I=1 TO N:A(I)=I:NEXT I
  57. 540 M=N:GOSUB 560
  58. 550 PRINT "END":GOTO 510
  59. 560 IF M>2 THEN 610
  60. 570 GOSUB 670
  61. 580 X=A(1):A(1)=A(2):A(2)=X
  62. 590 GOSUB 670
  63. 600 M=M+1:RETURN
  64. 610 M=M-1:GOSUB 560
  65. 620 X=A(M)-1
  66. 630 IF X=0 THEN 600
  67. 640 GOSUB 680
  68. 650 IF Y=0 THEN X=X-1:GOTO 630
  69. 660 GOSUB 730:GOTO 610
  70. 670 FOR I=1 TO N:PRINT A(I);:NEXT I:PRINT "---";N1:N1=N1+1:RETURN
  71. 680 Y=0
  72. 690 FOR I=1 TO M-1:IF A(I)=X THEN Y=I
  73. 700 NEXT I
  74. 710 IF Y=0 THEN  RETURN
  75. 720 A(Y)=A(M):A(M)=X:RETURN
  76. 730 IF M<4 THEN RETURN
  77. 740 FOR I=1 TO M-2
  78. 750 FOR J=I+1 TO M-1
  79. 760 IF A(I)<A(J) THEN 780
  80. 770 X=A(I):A(I)=A(J):A(J)=X
  81. 780 NEXT J:NEXT I
  82. 790 RETURN
  83.  
  84. 800 CLEAR:DEFDBL A-X:PRINT"DECIMALS to FRACTIONS CONVERSION:":INPUT"DECIMAL=";X:F=X:D=1:A=1:B=1
  85. 805 IF X=INT(X) THEN PRINT"Must contain Decimals. Input again:":GOTO 800
  86. 810 E=INT(A/F):G=F:F=A-E*G:A=G:G=N:N=B+E*G:B=G:G=D:D=C+E*G:C=G:IF D<2 THEN 810
  87. 820 G=N/D:PRINT G;"=";N;"/";D:IF G<>X THEN 810
  88. 830 PRINT "In agreement to 14 Digits.":PRINT"END":PRINT:GOTO 800
  89.  
  90. 910 CLEAR:CLS:DEFDBL A-H,J-N:PRINT"* BASE CONVERTER (2-16) *":A$="0123456789ABCDEF":PRINT"For very large numbers,back check the result.":PRINT
  91. 915 DIM A0$(0),A1$(1)
  92. 920 INPUT "MENU:  1=BASE N ->10: 2=BASE 10 ->N:";L:IF (L=1)+(L=2)<>-1 THEN PRINT "ERROR:":GOTO 920
  93. 930 INPUT "OTHER BASE N (2-16)=";N:IF N<2 OR N>16 OR N<>INT(N) THEN PRINT"BASE OUT OF RANGE:":GOTO 930
  94. 950 IF L=2 THEN 1200
  95. 1100 PRINT "CONVERTING BASE";N;" TO BASE 10:":A0$(0)="":A1$(0)=""
  96. 1105 PRINT"+INTEGER IN BASE ";N;"=";:INPUT A0$(0):A=LEN(A0$(0)):B=0
  97. 1115 FOR I=0 TO A-1:C$=MID$(A0$(0),A-I,1):G=ASC(C$):IF (G>=48) AND (G<=57) THEN G=G-48:GOTO 1130
  98. 1120 IF (G>=65) AND (G<=70) THEN G=G-55:GOTO 1130
  99. 1125 PRINT"INVALID INPUT:":GOTO 1100
  100. 1130 IF G>=N THEN PRINT "DIGIT IN WRONG BASE:":GOTO 1105
  101. 1140 B=B+G*N^I:NEXT I:IF B>9999999999999# THEN PRINT"INPUT TOO BIG:":GOTO 1100
  102. 1145 PRINT "RESULT=";B:PRINT"END:":PRINT:GOTO 1100
  103. 1200 PRINT"CONVERTING BASE 10 TO BASE";N;":":A0$(0)="":A1$(0)="":B$=""
  104. 1205 INPUT "+DECIMAL INTEGER (<10,000,000,000,000) =";D:E=D:IF D>9999999999999# THEN PRINT "TOO BIG:":GOTO 1200
  105. 1220 F=0:FOR I=1 TO 60
  106. 1235 B=(E/N)-INT (E/N):C=INT (B*N+.5):E=INT (E/N):IF E=0 THEN F=1
  107. 1250 B$=MID$(A$,C+1,1):A0$(0)=A0$(0)+B$:IF F=1 THEN 1300
  108. 1260 NEXT I:PRINT "Too BIG for display or a - input:":GOTO 1200
  109. 1300 FOR I=LEN(A0$(0)) TO 1 STEP-1:B$=MID$(A0$(0),I,1)
  110. 1310 A1$(0)=A1$(0)+B$:NEXT I
  111. 1320 PRINT "RESULT=":PRINT A1$(0):PRINT"END:":PRINT:GOTO 1200
  112. 1500 CLS:PRINT"* RANDOM NUMBERS *":PRINT"Limits can be +/-.If either isn't a whole number,":PRINT"or if you request continuous random numbers,":PRINT"then the resultant random numbers are continuous & the end":PRINT"points wont be included in sequence.
  113. 1505 PRINT"Otherwise the sequence can be integers or continuous."
  114. 1510 CLEAR:DEFDBL A-I,L-M,O-Z:INPUT "LOWER LIMIT=";L:INPUT "UPPER LIMIT=";U:IF U<=L THEN PRINT"INVALID:":GOTO 1510
  115. 1523 INPUT "QUANTITY of RANDOM NUMBERS=";N:IF L<>INT(L) OR U<>INT(U) THEN 1530
  116. 1527 INPUT "MENU:O=CONTINUOUS :1=INTEGERS :?=";M
  117. 1530 INPUT "PRINTER OUTPUT? (1/0)=";P:IF P=1 THEN LPRINT"* RANDOM NUMBERS";L;"to";U;"*"
  118. 1540 PRINT"Random numbers repeat if you input the same seed:":RANDOMIZE:FOR K=1 TO N:IF M=1 THEN 1600
  119. 1550 R=RND:R=L+R*(U-L):GOTO 1650
  120. 1600 R=INT(1+RND*(U-L+1)):R=R+L-1
  121. 1650 T=T+R:PRINT K;"* ";R:IF P=1 THEN LPRINT "* ";R
  122. 1660 NEXT K:PRINT"AVERAGE=";T/N:IF P=1 THEN LPRINT "AVERAGE=";T/N
  123. 1665 PRINT"END:":PRINT:GOTO 1510
  124.  
  125.                                           MACINTOSH LISTING
  126.